import axios from "axios";
import store from "@/store";

// 创建一个独立的axios实例
const service = axios.create({
  // 设置baseUr地址,如果通过proxy跨域可直接填写base地址
  baseURL: 'http://127.0.0.1:8888',
  // 定义统一的请求头部
  headers: {
    "Content-Type": "application/x-www-form-urlencoded;charset=UTF-8"
  },
  // 配置请求超时时间
  timeout: 10000,
  // 如果用的JSONP，可以配置此参数带上cookie凭证，如果是代理和CORS不用设置
  // withCredentials: true
});

// 请求拦截
service.interceptors.request.use(config => {
  console.log('store',store.getters.getToken)
  // 自定义header，可添加项目token
  // 请求头添加token，在本地取，在vuex中取会有刷新问题
  // -----------更新----将vuex中的token初始化改成从本地取就可以了，这里可以用vuex中的
  config.headers['Authorization'] = 'Bearer'+' '+ store.getters.getToken;
  // config.headers['Authorization'] = 'Bearer'+' '+window.localStorage.getItem('token');
  return config;
});
// 响应拦截
service.interceptors.response.use((response) => {
  // 获取接口返回结果
  const res = response.data;
  console.log("口返回结果", response)
  // code为0，直接把结果返回回去，这样前端代码就不用在获取一次data.
  if (res.status === 200) {
    return res;
  } else if (res.status === 401) {
    console.log("为未登录")
    window.localStorage.setItem('token', null);
    window.location.href = 'http://' + window.location.host + '/' 
    return res;
  } else {
    // 错误显示可在service中控制，因为某些场景我们不想要展示错误
    // Message.error(res.message);
    return res;
  }
}, () => {
  // Message.error('网络请求异常，请稍后重试!');
  console.log("网络请求异常，请稍后重试!")
});

export default service;